/*
 * Copyright 2021 by LunaSec (owned by Refinery Labs, Inc)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */
import { Database, open } from 'sqlite';
import sqlite3 from 'sqlite3';
sqlite3.verbose();

export type DbType = Database<sqlite3.Database, sqlite3.Statement>;

export async function initDb(dbName: string): Promise<DbType> {
  const db = await open({
    filename: `db.${dbName}.sqlite3`,
    driver: sqlite3.Database,
  });
  await db.migrate({
    force: false, // force remigrate if true.  You should usually just delete the db file instead to wipe db
    migrationsPath: __dirname + '/migrations',
  });
  return db;
}
